// 位运算
// 从第一位开始，创建掩码，count 设置为 0
// 将每个数字和掩码进行 & 元素，如果结果不为 0，count++
// 如果 count 整除 3，说明出现一次的数字这一位不是 1；否则，说明出现一次的数字这一位是 1
// 继续检查第二位，一直到 32 位结束

var singleNumber = function (nums) {
  let res = 0;
  for (let bit = 0; bit < 32; bit++) {
    let count = 0;
    let mask = 1 << bit;
    for (const num of nums) {
      if (num & mask) count++;
    }
    if (count % 3 === 1) {
      res = res | mask;
    }
  } 
  return res;``
}